widget: Print a g_warning() when a cairo_t is invalid
authorBenjamin Otte <otte@redhat.com>
Tue, 20 Dec 2011 14:34:57 +0000 (15:34 +0100)
committerBenjamin Otte <otte@redhat.com>
Thu, 22 Dec 2011 23:15:59 +0000 (00:15 +0100)
Only print the warning on internal code, so we aren't too verbose.

gtk/gtkwidget.c

index ff7ede351b3de0917269b9da2abaf25be751aeb9..fe790f9958e78450ef31e35dc5bd5d079c931804 100644 (file)
@@ -5724,6 +5724,19 @@ _gtk_widget_draw_internal (GtkWidget *widget,
       g_signal_emit (widget, widget_signals[DRAW],
                      0, cr,
                      &result);
+
+      if (cairo_status (cr) &&
+          _gtk_cairo_get_event (cr))
+        {
+          /* We check the event so we only warn about internal GTK calls.
+           * Errors might come from PDF streams having write failures and
+           * we don't want to spam stderr in that case.
+           * We do want to catch errors from
+           */
+          g_warning ("drawing failure for widget `%s': %s",
+                     G_OBJECT_TYPE_NAME (widget),
+                     cairo_status_to_string (cairo_status (cr)));
+        }
     }
 
   context = gtk_widget_get_style_context (widget);